From 8521f115cbb4570d630b5d10323f2f8ede737fb8 Mon Sep 17 00:00:00 2001 From: "kfraser@localhost.localdomain" Date: Mon, 21 Aug 2006 11:51:54 +0100 Subject: [PATCH] [XEN] Revert patch 11213. Signed-off-by: Keir Fraser --- xen/arch/x86/mm.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 2c42f05ee9..7ec237ee8b 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -3139,14 +3139,13 @@ static int ptwr_emulated_update( } } + /* Checked successfully: do the update (write or cmpxchg). */ pl1e = map_domain_page(page_to_mfn(page)); pl1e = (l1_pgentry_t *)((unsigned long)pl1e + (addr & ~PAGE_MASK)); - - if ( shadow2_mode_enabled(d) ) - shadow2_lock(d); - if ( do_cmpxchg ) { + if ( shadow2_mode_enabled(d) ) + shadow2_lock(d); ol1e = l1e_from_intpte(old); if ( cmpxchg((intpte_t *)pl1e, old, val) != old ) { @@ -3156,6 +3155,11 @@ static int ptwr_emulated_update( put_page_from_l1e(nl1e, d); return X86EMUL_CMPXCHG_FAILED; } + if ( unlikely(shadow2_mode_enabled(v->domain)) ) + { + shadow2_validate_guest_entry(v, _mfn(page_to_mfn(page)), pl1e); + shadow2_unlock(v->domain); + } } else { @@ -3164,12 +3168,6 @@ static int ptwr_emulated_update( BUG(); } - if ( shadow2_mode_enabled(d) ) - { - shadow2_validate_guest_entry(v, _mfn(page_to_mfn(page)), pl1e); - shadow2_unlock(v->domain); - } - unmap_domain_page(pl1e); /* Finally, drop the old PTE. */ -- 2.30.2